#include <cstdio>



int v, n;
int W[35];
bool DP[20010];

int min_rv;

void DFS(int dv, int *dw) {
	bool flag = false;
	for (int i=0; i<n; i++) {
		if (dw[i] == 0) continue;
		if (dv+dw[i] <= v) {
			if (DP[dv+dw[i]]) continue;
			flag = true;
			int bak = dw[i];
			dw[i] = 0;
			DFS(dv+bak, dw);
			DP[dv+bak] = true;
			dw[i] = bak;
		}
	}
	if (!flag) {
		if (v-dv < min_rv) {
			min_rv = v-dv;
		}
	}
}

int main() {
	scanf("%d%d", &v, &n);
	for (int i=0; i<n; i++) {
		scanf("%d", &W[i]);
	}
	min_rv = 0x3F3F3F3F;
	DFS(0, W);
	printf("%d\n", min_rv);
	return 0;
}
